#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
从Excel文件读取B列的文章标题并保存到文本文件
"""

import pandas as pd
import os

def read_excel_titles():
    """从Excel文件读取B列的文章标题"""
    
    # Excel文件路径
    excel_file = r"C:\Users\byan\Desktop\crawl_by_trae\crawl_by_trae\文档\2023-2024年文章Google引用详情.xlsx"
    
    # 输出文件路径
    output_dir = "data"
    output_file = os.path.join(output_dir, "source_article.txt")
    
    try:
        # 检查Excel文件是否存在
        if not os.path.exists(excel_file):
            print(f"错误：Excel文件不存在: {excel_file}")
            return
        
        # 创建data目录（如果不存在）
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)
            print(f"创建目录: {output_dir}")
        
        # 读取Excel文件
        print(f"正在读取Excel文件: {excel_file}")
        df = pd.read_excel(excel_file)
        
        # 获取B列数据（索引为1，因为A列索引为0）
        if df.shape[1] < 2:
            print("错误：Excel文件没有B列")
            return
        
        # 获取B列的所有数据
        b_column = df.iloc[:, 1]  # 第二列（B列）
        
        # 过滤掉空值和NaN
        titles = []
        for value in b_column:
            if pd.notna(value) and str(value).strip():
                titles.append(str(value).strip())
        
        if not titles:
            print("警告：B列中没有找到有效的文章标题")
            return
        
        # 保存到文本文件
        with open(output_file, 'w', encoding='utf-8') as f:
            for title in titles:
                f.write(title + '\n')
        
        print(f"成功读取 {len(titles)} 个文章标题")
        print(f"已保存到: {output_file}")
        
        # 显示前几个标题作为预览
        print("\n前5个文章标题预览:")
        for i, title in enumerate(titles[:5], 1):
            print(f"{i}. {title}")
        
        if len(titles) > 5:
            print(f"... 还有 {len(titles) - 5} 个标题")
            
    except Exception as e:
        print(f"读取Excel文件时发生错误: {str(e)}")

if __name__ == "__main__":
    read_excel_titles()